<?php
class Szamla extends AppModel {

	var $name = 'Szamla';
	/*var $validate = array(
		'gyujto_id' => array('numeric'),
		'szam' => array('alphanumeric'),
		'nev' => array('alphanumeric'),
		'ev' => array('userdefined')
	);*/

	//The Associations below have been created with all possible keys, those that are not needed can be removed
	var $belongsTo = array(
			'Gyujto' => array('className' => 'Gyujto',
								'foreignKey' => 'ceg_id',
								'conditions' => '',
								'fields' => '',
								'order' => ''
			)
	);

	var $hasMany = array(
			'TartozikTetel' => array('className' => 'Tetel',
								'foreignKey' => 't',
								'dependent' => false,
								'conditions' => '',
								'fields' => '',
								'order' => '',
								'limit' => '',
								'offset' => '',
								'exclusive' => '',
								'finderQuery' => '',
								'counterQuery' => ''
			),
			'KovetelTetel' => array('className' => 'Tetel',
								'foreignKey' => 'k',
								'dependent' => false,
								'conditions' => '',
								'fields' => '',
								'order' => '',
								'limit' => '',
								'offset' => '',
								'exclusive' => '',
								'finderQuery' => '',
								'counterQuery' => ''
			)
	);
	
/*
* Adott évben megkeressük a számla id-hez tartozó számlaszámot
*
* @param int $szamlaId a keresett számla száma
* @return int $szamla['szam'] a keresett id-jű számla száma
*/
	function getSzamlaSzam($szamlaId, $ev){
		$szamla = $this->find(
						'first',
						array(
							'fields' => 'szam',
							'conditions' => array(
											'id' => $szamlaId,
											'ev' => array(0, $ev)
											),
							'recursive' => -1
						)
						);
		if(isset($szamla['TartozikSzamla']['szam']))
			return($szamla['TartozikSzamla']['szam']);
		else
			return($szamla['Szamla']['szam']);
	}

/**
 * Egy számla id-jét keressük a számlaszám és számlanév stringek alapján
 * @deprecated since r404 use getSzamlaId() helyette
 * @param string $szamlaSzam a keresett számla száma (és neve)
 * @param int $ceg az aktuális cég id-je
 * @param int $ev az aktuális év
 * @return szamla.id
 */
	function getIdBySzam($szamlaSzam, $ceg, $ev){
		if(preg_match('/\d+$/', $szamlaSzam))	//sima számot kaptunk, valójában ez egy számla id, visszaadhatjuk
			return $szamlaSzam;
		if(preg_match('/(\d+) .*/', $szamlaSzam, $szamla))
			return($this->getSzamlaId($szamlaSzam, array('ev' => 2012, 'cegId' => 2)));
	}

/**
 * Egy számla id-jét keressük a számlaszám és számlanév stringek alapján egy cégben egy évben
 * @param string $szamlaSzam a keresett számla száma (és neve), vagy már maga az id
 * @param array $params 
 * 					ev			melyik évben keresgéljünk
 * 					cegId		melyik cégben keresgéljünk
 * 					szamlaSzam magában jövő számlaszám ami nem id
 * @return int a keresett számla id-je vagy false ha nincs
 */
	function getSzamlaId($szamlaSzam, $params){
		if(!$params['ev'] || !$params['cegId'])
			throw new NotImplementedException('Hiányzik a Szamla->getSzamlaId hívásnál az év vagy a cegId!');

		if(!isset($params['szamlaSzam'])){
			if(is_numeric($szamlaSzam))	//ez egy id, adjuk vissza
				return $szamlaSzam;
			else{
				$szamlaSzam = substr($szamlaSzam, 0, strpos($szamlaSzam, ' '));
			}
		}
		
		$this->unbindModel(array('hasMany' => array('TartozikTetel', 'KovetelTetel'), 'belongsTo' => array('Gyujto')));
		
		$szamla = $this->find('first',
											array(
												'conditions' => array(
																		'szam' => $szamlaSzam,
																		'ceg_id' => array(0, $params['cegId']),
																		'ev' => array(0, $params['ev'])
																			),
												'fields' => 'id'
													)
											);
		//Debugger::log($szamla);
		if($szamla){
			$szamlaId = isset($szamla['Szamla']['id']) ? $szamla['Szamla']['id'] : $szamla['TartozikSzamla']['id'];
			return $szamlaId;
			}
		return false;
	}

}
?>